package com.probiz.estore.common.service;

import java.util.List;

import com.probiz.estore.common.model.customer.Address;
import com.probiz.estore.common.model.customer.Customer;
import com.probiz.estore.common.model.customer.Membership;
import com.probiz.estore.common.model.customer.WishlistItem;

/**
 * 前台用户服务类
 *
 */
public interface CustomerService {

	/**
	 * 获取默认的运输地址
	 * @param appuserId
	 * @return
	 */
	public Address getDefShippingAddr(Integer appuserId);
	
	/**
	 * 将前台客户第一次结账时的地址保存为默认的运输地址
	 * @param address
	 */
	public void saveCustomerAddAsDef(Address address);
	/**
	 * 获取用户所有的运输地址
	 * @param appuserId
	 *        当前登陆用户的id
	 * @return
	 */
	public List<Address> getAllShippingAddressByAppuserId(Integer appuserId);
	
	public Customer getByAppUserId(Integer appUserId);
	
	public WishlistItem getWishlistItem(Integer wishlistItemId);
	
	/**
	 * 将用户某个地址设置为默认
	 * @param addressId
	 */
	public void updateAddressAsDefault(Integer addressId);
	
	/**
	 * 删除某个地址
	 * @param addressId
	 */
	public void delAddress(Integer addressId);
	
	/**
	 * 将某个意愿清单设置为默认
	 * @param wishList
	 */
	public void setWishListAsDefault(Integer wishListId);
	
	/**
	 * 通过等级的名称来获取Membership
	 * @param membershipName
	 * @return
	 */
	public List<Membership> getMembershipByName(String membershipName);
	
	
	/**
	 * 保存或更新用户信息
	 * @param customer
	 */
	public void saveCustomer(Customer customer);
	
	/**
	 * 为客户添加对商品评论的资质
	 * @param customerId 客户id
	 * @param productId 商品id
	 */
	public void addEligibility(Integer customerId,Integer productId);
	
	/**
	 * 统计客户总量-后台控制面板
	 * @return
	 * @since V3.5
	 */
	public Long countCustomerTotal();
}
